<?php
session_start();
include('include/config.php');
include('include/fonctions.php');
$messageErrMail = 'Page : moyenne.php<br />';
$msgErr = '';
actualiser_session();
$connection = connexionBdd();

/* * ****************************************************************************
 *      On cherche à connaitre le nombre de niveau
 *      que possède l'enseignant
 * **************************************************************************** */
$reqNbrNiveau = $connection->prepare('SELECT DISTINCT  `id_niveau`
                                        FROM  `eleve`
                                        WHERE  `id_prof` =:id
                                        ORDER BY `id_niveau`
                                        LIMIT 0 , 10');
$reqNbrNiveau->bindParam(':id', $_SESSION['prof_id'], PDO::PARAM_INT);
$reqNbrNiveau->execute();
$nbrNiveau = $reqNbrNiveau->rowCount();
$tabNiveau = $reqNbrNiveau->fetchAll(PDO::FETCH_ASSOC);
$reqNbrNiveau->closeCursor();

/* * *********************************************************************************************
 *      on récupère la liste des elèves d'un enseignant
 *      pour la clause IN de la requete suivante
 *      et ceux pour chaque classe
 * ********************************************************************************************* */
$i = 0;
foreach ($tabNiveau as $valueNiveau) {
    $req = $connection->prepare('SELECT  `id_eleve`,  `nom_niveau`
                                FROM  `eleve`
                                NATURAL JOIN  `niveau`
                                WHERE `id_prof` =:id
                                AND  `id_niveau` =:idNiveau');

    $req->bindParam(':id', $_SESSION['prof_id'], PDO::PARAM_INT);
    $req->bindParam(':idNiveau', $valueNiveau['id_niveau'], PDO::PARAM_INT);
    $req->execute();
    $nbrEleve = $req->rowCount();
    $tabEleve[$i++] = $req->fetchAll(PDO::FETCH_ASSOC);
    $req->closeCursor();
}

function affichageMoyenne($trimestre, $nbrNiveau, $precision) {
    global $tabEleve;

    $connection = connexionBdd();
    /*     * *********************************************************************
     *     récupération des moyennes de classes d'un trimestre
     *      Par niveau
     * ********************************************************************* */

    for ($i = 0; $i < $nbrNiveau; $i++) {
        /*         * ******************************************************************
         *      on recupère les id des eleves sous forme de liste
         *      avec une liste par niveau
         * ******************************************************************* */
        foreach ($tabEleve[$i] as $valueId) {
            $liste_eleve[$i][] = $valueId['id_eleve'];
            $nomNiveau = $valueId['nom_niveau'];
        }

        $liste = implode(",", $liste_eleve[$i]);
        $query = 'SELECT AVG(`numerique_note`) AS moyenne,`nom_matiere`,`id_matiere`
            FROM `note`
            NATURAL JOIN `matiere`
            WHERE `trimestre_note` = ' . $trimestre . '
            AND `id_eleve` IN (' . $liste . ')
            GROUP BY `id_matiere`
            ORDER BY `id_domaine`,`nom_matiere`';

        $reqMoyClasse = $connection->query($query);

        $reqMoyClasse->execute();
        $count = $reqMoyClasse->rowCount();
        if ($count < 1) {
            echo '<div class="info">Vous n\'avez aucune moyenne pour cette période. Vous pouvez saisir des notes sur la page <a href="ajout-devoir.php">Saisir un devoir</a>.</div>';
        } else {
            $moyenneClasse[$i] = $reqMoyClasse->fetchAll(PDO::FETCH_ASSOC);
            /*             * *******************************************************
             *      On va calculer la moyenne générale de chaque classe
             * ******************************************************** */
            $adition = 0;
            foreach ($moyenneClasse[$i] as $value) {
                if (is_numeric($value['moyenne'])) {
                    $adition += round($value['moyenne'], $precision);
                }
            }
            $moyenneGlobalClasse[$i] = round($adition / count($moyenneClasse[$i]), $precision);
            echo '<strong>' . $nomNiveau . '</strong><br />';
            $first = true;
            foreach ($moyenneClasse[$i] as $listeMatiere) {
                if ($first)
                    $pyjama = 'pyjama';
                else
                    $pyjama = '';

                echo '<div class="result ' . $pyjama . '">' . $listeMatiere['nom_matiere'] . '</div><div class="result2 alignright ' . $pyjama . '">' . round($listeMatiere['moyenne'], $precision) . '</div><div class="clear"></div>';
                $first = !$first;
            }
            echo '<div class="result alignright border-top bold">Moyenne Générale</div><div class="result2 alignright border-top bold">' . $moyenneGlobalClasse[$i] . '</div><div class="clear"></div>';
        }
        $reqMoyClasse->closeCursor();
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//FR"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Moyenne par matière</title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
        <meta name="description" content="Retrouver l'ensemble des moyennes par matière et celon les niveaux." />
        <meta name="keywords" content="bulletin, facile, logiciel, trimestre, scolaire, cycle, primaire, matière" />
        <meta name="author" content="Wicenty Web" />
        <link rel="icon" href="images/favicon.ico" type="image/x-icon" />
        <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
        <link rel="stylesheet" href="css/style.css" />
        <link rel="stylesheet" href="css/menu.css" />
        <link rel="stylesheet" href="css/onglet.css" />
        <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
        <script>
            $(document).ready(function() {
                //  When user clicks on tab, this code will be executed
                $("#tabs li").click(function() {
                    //  First remove class "active" from currently active tab
                    $("#tabs li").removeClass('active');

                    //  Now add class "active" to the selected/clicked tab
                    $(this).addClass("active");

                    //  Hide all tab content
                    $(".tab_content").hide();

                    //  Here we get the href value of the selected tab
                    var selected_tab = $(this).find("a").attr("href");

                    //  Show the selected tab content
                    $(selected_tab).fadeIn();

                    //  At the end, we add return false so that the click on the link is not executed
                    return false;
                });
            });
        </script>
    </head>
    <body>
        <!--==============================header=================================-->
        <?php
        require_once('include/menu.php');
        ?>

        <!--==============================content================================-->
        <div class="bg1">
            <div class="bg">
                <section id="content">
                    <div class="container_12">
                        <article class="grid_12">
                            <h1>Moyenne par Matière</h1>
                            <p>Sur cette page, retrouvez l'ensemble des moyennes par matière et par trimestre.</p>
                        </article>
                        <article class="grid_12">
                            <div class="border-bot"></div>
                        </article>
                        <article class='grid_12'>
                            <br />
                            <div id="tabs_wrapper">
                                <div id="tabs_container">
                                    <ul id="tabs">
                                        <?php
                                        //on récupère le nombres de période de l'enseignant
                                        $req = $connection->prepare('SELECT `prof_period`,`prof_virgule` FROM `prof` WHERE `prof_id` =:id LIMIT 0 , 1');
                                        $req->bindParam(':id', $_SESSION['prof_id'], PDO::PARAM_INT);
                                        $req->execute();
                                        $donnees = $req->fetchAll(PDO::FETCH_ASSOC);
                                        $req->closeCursor();
                                        $trimestre = $donnees[0]['prof_period'];                                        
                                        //on affiche les onglets des périodes
                                        for ($i = 1; $i <= $trimestre; $i++) {
                                            if ($i == 1)
                                                echo '<li class="active"><a href="#tab' . $i . '">Période ' . $i . '</a></li>';
                                            else
                                                echo '<li><a href="#tab' . $i . '">Période ' . $i . '</a></li>';
                                        }
                                        ?>
                                    </ul>
                                </div>
                                <div id="tabs_content_container">
                                    <?php
                                    for ($i = 1; $i <= $trimestre; $i++) {
                                        //gestion du tab active
                                        if ($i == 1)
                                            echo '<div id="tab' . $i . '" class="tab_content" style="display: block;">';
                                        else
                                            echo '<div id="tab' . $i . '" class="tab_content">';
                                        affichageMoyenne($i, $nbrNiveau, $donnees[0]['prof_virgule']);
                                        echo '</div>';
                                    }
                                    ?>
                                </div>
                            </div>
                        </article>
                    </div>
                </section>

                <!--==============================footer=================================-->
                <?php
//                echo '<pre>';
//                print_r($GLOBALS);
//                echo '</pre>';
                require_once 'include/footer.php';
                ?>
            </div>
        </div>
    </body>
</html>